1. Field
The present disclosure pertains to the field of information processing, and more particularly, to the field of platform virtualization.
2. Description of Related Art
Generally, the concept of virtualization in information processing systems allows multiple instances of one or more operating systems (each, an “OS”) to run on a single information processing system, even though each OS is designed to have complete, direct control over the system and its resources. Virtualization is typically implemented by using software (e.g., a virtual machine monitor, or a “VMM”) to present to each OS a “virtual machine” (“VM”) having virtual resources, including one or more virtual processors, that the OS may completely and directly control, while the VMM maintains a system environment for implementing virtualization policies such as sharing and/or allocating the physical resources among the VMs (the “virtualization environment” or “virtual machine environment”). Each OS, and any other software, that runs on a VM is referred to as a “guest” or as “guest software,” while a “host” or “host software” is software, such as a VMM, that runs outside of the virtualization environment.
A physical processor in an information processing system may support virtualization, for example, by supporting an instruction to enter a virtualization environment to run a guest on a virtual processor (i.e., a physical processor under constraints imposed by a VMM) in a VM. In the virtualization environment, certain events, operations, and situations, such as external interrupts or attempts to access privileged registers or resources, may be intercepted, i.e., cause the processor to exit the virtualization environment so that a VMM may operate, for example, to implement virtualization policies. A physical processor may also support other instructions for maintaining a virtualization environment, and may include memory or register bits that indicate or control virtualization capabilities of the physical processor.
A physical processor may also support a “pause” instruction to insert a delay into an instruction stream. A pause instruction may be used in a spin loop, to slow down the execution of the loop to save power and/or to prevent the processor from filling a different load buffer with the same variable each time the loop is executed. A processor may be designed to detect the execution of a pause instruction by a virtual machine and to cause the processor to exit that virtual machine and enter a different virtual machine, based on the assumption that the guest running in the first virtual machine was in a spin loop during which a guest running in the second virtual machine could more efficiently use the processor's resources.